package com.guodi.map.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.guodi.common.utils.PageData;
import com.guodi.map.dto.MapDivisionTOLayerDto;
import com.guodi.map.entity.MapDivision;

import java.util.List;
import java.util.Map;

/**
 * @描述：行政区划表 服务类
 * @作者: 代鹏刚
 * @日期: 2020-04-07
 */
public interface IMapDivisionService extends IService<MapDivision> {


    /**
    * @描述: 根据实体类分页查询
    * @入参:
    * @出参:
    * @作者: 代鹏刚
    * @日期: 2021/2/1 18:25
    **/
    List<MapDivision> listByEntity(MapDivision mapDivision);

    /**
    * @描述: 获取行政区划代码目录树
    * @入参:
    * @出参:
    * @作者: 代鹏刚
    * @日期: 2020/4/7 17:29
    **/
    List<MapDivision> listDivisionTree();

    /**
    * @描述:获取行政区划代码目录树数据
    * @入参:
    * @出参:
    * @作者: 郑文彬
    * @日期: 2020/4/10 16:22
    **/
    List<MapDivision>  listDivisionTreeData(List<String> parentId);

    /**
    * @描述:
    * @入参:
    * @出参:
    * @作者: 郑文彬
    * @日期: 2020/4/10 20:08
    **/
    public void importLayer(PageData pd);

    /**
     * @描述:
     * @入参:
     * @出参:
     * @作者: 戴伙进
     * @日期: 2020/05/08 20:08
     **/
    public void importSuLayer(PageData pd);

    /**
     * @描述:
     * @入参:
     * @出参:
     * @作者: 戴伙进
     * @日期: 2020/05/08 20:08
     **/
    public void importSuLayer(MapDivisionTOLayerDto dto);

    /**
    * @描述: 根据code查询
    * @入参:
    * @出参:
    * @作者: 代鹏刚
    * @日期: 2020/4/15 15:48
    **/
    List<MapDivision> findByCode(String code);

    /**
    * @描述: 根据当前用户关联行政区划匹配系统行政区划代码
    * @入参:
    * @出参:
    * @作者: 代鹏刚
    * @日期: 2021/1/14 16:28
    **/
    MapDivision mateByCode(String code);

    /**
    * @描述: 根据行政编码获取行政区划树
    * @入参:
    * @出参:
    * @作者: 代鹏刚
    * @日期: 2020/6/11 16:52
    **/
    List<MapDivision> listDataByCode(String code);

    /**
     * @描述: 根据code获取数据
     * @入参:
     * @出参:
     * @作者: 余家鑫
     * @日期: 2021/4/13 下午6:01
     */
    String getNameByCode(String code);

    /**
     * @描述: 根据区划编码, 获取编码->名字的map
     * @入参:
     * @出参:
     * @作者: 余家鑫
     * @日期: 2021/4/15 下午4:08
     */
    Map<String, String> mapDivisionCode2Name(List<String> divisionCodes);
}
